# 

import open3d as o3d

print("Load a polygon volume and use it to crop the original point cloud")

# o3d.data.DemoCropPointCloud() 会自动从 GitHub 下载 “点云裁剪” 的演示数据，但是由于网络问题，可能下载失败
# o3d.data.DemoCropPointCloud() 是示例加载器
demo_crop_data = o3d.data.DemoCropPointCloud()
pcd = o3d.io.read_point_cloud(demo_crop_data.point_cloud_path)
o3d.visualization.draw_geometries_with_editing([pcd])
# o3d.visualization.read_selection_polygon_volume() 多边形选择体
# 多边形的具体配置遵循json文件
# json中的通常定义 
#       bounding_polygon：2D 多边形的顶点
#       extrusion：多边形的  拉伸方向 和 范围
vol = o3d.visualization.read_selection_polygon_volume(demo_crop_data.cropped_json_path)
# 执行裁剪：只保留 多边形体积内 
chair = vol.crop_point_cloud(pcd)
o3d.visualization.draw_geometries([chair],
                                  zoom=0.7,
                                  front=[0.5439, -0.2333, -0.8060],
                                  lookat=[2.4615, 2.1331, 1.338],
                                  up=[-0.1781, -0.9708, 0.1608])

# 看看裁剪前是什么样子的
# import open3d as o3d
# import numpy as np

# demo_crop_data = o3d.data.DemoCropPointCloud()
# pcd = o3d.io.read_point_cloud(demo_crop_data.point_cloud_path)

# o3d.visualization.draw_geometries([pcd],
#                                   zoom=0.7,
#                                   front=[0.5439, -0.2333, -0.8060],
#                                   lookat=[2.4615, 2.1331, 1.338],
#                                   up=[-0.1781, -0.9708, 0.1608])

# 裁剪前的图就是我们之前一直在用的那个


# 我现在想要修改裁剪的范围怎么办？
# json文件的动态生成是一个问题，框选不出来，问题在哪？